package com.mc.lab.service.impl;

import com.mc.clt.domain.CltResult;
import com.mc.clt.mapper.CltResultMapper;
import com.mc.common.utils.DateUtils;
import com.mc.lab.domain.*;
import com.mc.lab.mapper.LabAssayGermplasmMapper;
import com.mc.lab.mapper.LabExpertMapper;
import com.mc.lab.mapper.LabGermplasmExprieMapper;
import com.mc.lab.mapper.LabQualificationMapper;
import com.mc.lab.service.ILabService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;
@Service
public class LabServerImpl implements ILabService {
    @Autowired
    private LabAssayGermplasmMapper assayGermplasmMapper;
    @Autowired
    private LabGermplasmExprieMapper germplasmExprieMapper;
    @Autowired
    private CltResultMapper cltResultMapper;
    @Autowired
    private LabQualificationMapper qualificationMapper;
    @Autowired
    private LabExpertMapper labExpertMapper;

    @Override
    public List<LabAssayGermplasm> selectLabAssayGermplasmByCltId(String cltId) {
        LabAssayGermplasm labAssayGermplasm = new LabAssayGermplasm();
        labAssayGermplasm.setCltId(cltId);
        return assayGermplasmMapper.selectLabAssayGermplasmList(labAssayGermplasm);
    }

    @Transactional//多次插入开启事务
    @Override
    public int insertLabAssayGermplasm(LabAssayGermplasm labAssayGermplasm) {
        CltResult cltResult = new CltResult();
        cltResult.setType("2");//已化验
        cltResult.setUpdateUserId(labAssayGermplasm.getCreateUserId());
        cltResult.setUpdateTime(DateUtils.getNowDate());
        cltResult.setResultId(labAssayGermplasm.getCltId());
        cltResultMapper.updateCltResult(cltResult);
        return assayGermplasmMapper.insertLabAssayGermplasm(labAssayGermplasm);
    }

    @Override
    public int updateLabAssayGermplasm(LabAssayGermplasm labAssayGermplasm) {
        return assayGermplasmMapper.updateLabAssayGermplasm(labAssayGermplasm);
    }

    @Override
    public List<LabGermplasmExprie> selectLabGermplasmExprieList() {
        LabGermplasmExprie germplasmExprie = new LabGermplasmExprie();
        germplasmExprie.setHandleType("0");
        return germplasmExprieMapper.selectLabGermplasmExprieList(germplasmExprie);
    }

    @Override
    public int updateLabGermplasmExprie(LabGermplasmExprie labGermplasmExprie) {
        return germplasmExprieMapper.updateLabGermplasmExprie(labGermplasmExprie);
    }

    @Override
    public LabAssayGermplasm selectLabAssayGermplasm(String id) {
        return assayGermplasmMapper.selectLabAssayGermplasmById(id);
    }

    @Override
    public List<String> selectLabPhotoPath(String labId) {
        List<String> list = new ArrayList<String>();
        list.addAll(qualificationMapper.selectLabQualificationPath(labId));

        list.addAll(labExpertMapper.selectLabExpertPath(labId));
        return list;
    }
}
